﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Practices.Unity;
using Prisa.Entities;
using Prisa.BussinesLogic;

namespace Prisa.UI
{
    public partial class frmCierreDia : Form
    {
        public frmCierreDia()
        {
            InitializeComponent();
            this.BuildUp();
        }

        [Dependency]
        public IHistorialVentaBL historialBL { get; set; }

        [Dependency]
        public IVentaBL ventaBL { get; set; }

        private void frmCierreDia_Load(object sender, EventArgs e)
        {
            vENTABindingSource.DataSource = ventaBL.GetFromVentabyCliente("varios");
        }

        private void btnEjecutarCierre_Click(object sender, EventArgs e)
        {
            var fecha = Convert.ToDateTime(dateTimePicker1.Value.Date.ToLongDateString());

            var existeCierre = ventaBL.GetFromVentabyClienteAndFecha("varios", fecha);

            var prodHist = historialBL.GetFromHistorialVentasbyFechasAndProductoAndMenudeo(fecha, fecha, "", true);

            if (existeCierre.Count < 1)
            {
                if (prodHist.Count > 0)
                {
                    historialBL.CierreDeCaja(fecha);
                    MessageBox.Show("Cierre de Caja exitoso", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Close();
                }
                else MessageBox.Show("No existen ventas al menudeo para el día elegido", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                var rpt = MessageBox.Show(this,
                    string.Format("Ya se realizó el cierre de caja para este día \n ¿Desea volver a realizarlo?"), "Mensaje", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (rpt == DialogResult.Yes)
                {
                    foreach (var item in existeCierre)
                    {
                        ventaBL.EliminarVentaToNuevoCierreCaja(item.Id);
                    }
                    historialBL.CierreDeCaja(fecha);
                    MessageBox.Show("Cierre de Caja exitoso", "Mensaje", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    Close();
                }
                if (rpt == DialogResult.No)
                {
                    Close();
                }
            }
        }



    }
}
